<h2>DESCRIPTION</h2>

<em>i.ortho.photo</em> is a menu to launch the different parts of the 
ortho rectification process of aerial imagery. <em>i.ortho.photo</em>
allows the user to ortho-rectify imagery group files consisting of
several scanned aerial photographs (raster maps) of a common area.
<em>i.ortho.photo</em> guides the user through 8 steps required to
ortho-rectify the raster maps in a single imagery group. Alternatively,
all the steps can be performed separately by running the appropriate modules.

<ul>
<li><em>Initialization Options</em>
<ol>
<li value=1>Create/Modify imagery group to be orthorectified:
<a href="i.group.html">i.group</a></li>
<li>Select/Modify target location and mapset for orthorectification:
<a href="i.ortho.target.html">i.ortho.target</a></li>
<li>Select/Modify target elevation model used for orthorectification:
<a href="i.ortho.elev.html">i.ortho.elev</a></li>
<li>Create/Modify camera file of imagery group:
<a href="i.ortho.camera.html">i.ortho.camera</a></li>
</ol>
</li>
<li><em>Transformation Parameters Computation</em>
<ol>
<li value=5> Compute image-to-photo transformation:
<a href="g.gui.photo2image.html">g.gui.photo2image</a></li>
<li> Initialize parameters of camera:
<a href="i.ortho.init.html">i.ortho.init</a></li>
<li> Compute ortho-rectification parameters from ground control points:
<a href="g.gui.image2target.html">g.gui.image2target</a></li>
</ol>
</li>

<li><em>Ortho-rectification</em>
<ol>
<li value=8> Ortho-rectify imagery group:
<a href="i.ortho.rectify.html">i.ortho.rectify</a></li>
</ol>
</li>
</ul>

<p>
The ortho-rectification procedure in GRASS GIS places the image pixels on 
the surface of the earth by matching the coordinate system of the aerial
image in pixels (<em>image coordinate system</em>) and the coordinate 
system of the camera sensor in millimetres (<em>photo coordinate system</em>)
for the interior orientation of the image, and further to the georeferenced
coordinate system defined by projection parametres 
(<em>target coordinate system</em>) for exterior orientation.
        
<h2>EXAMPLE</h2>
Five groups of input parameters are required for ortho-rectification:
<ul> 
<li>Aerial image (images),</li>
<li>Exposure and characteristics of the camera, i.e. its coordinates in
target coordinate system and height above sea level, focal length, yaw, 
pitch and roll, dimensions of the camera sensor and resolution of aerial
images,</li>
<li>Reference surface, i.e. digital elevation model in the target coordinate
system used to normalize the terrain undulation,</li>
<li>Topographic reference map used to find corresponding ground control
points and/or,</li>
<li>Coordinates of ground control points in the target coordinate system.</li>
</ul>

<div align="center" style="margin: 10px">
<a href="i_ortho_photo_step1.png">
<img src="i_ortho_photo_step1.png" width="600" height="512" alt="i.ortho.photo example" border="0">
</a><br>
<i>Example of an input oblique image in a source location</i>
</div>
		
<p>
To ortho-rectify aerial images the user has to follow the menu options
step by step. Alternatively, all the steps can be performed separately
by running the corresponding modules.
<p>
The aerial photos shall be stored in a <b>source location</b> - a general 
Cartesian coordinate system (XY). Digital elevation model and a map reference 
(topo sheet or other map used for ground control point matching) shall 
be stored in a <b>target location</b> in a real-world coordinate system
(e.g. ETRS33).
<p>
The steps to follow are described below:
<ol>
<li><em>Create/Modify imagery group to be orthorectified:
<a href="i.group.html">i.group</a></em>
<p>
This step is to be run in the <b>source location</b>. 
<p>
In this first step an imagery group of aerial images for ortho-rectification 
is created or modified. The current imagery group is displayed at the top
of the menu. You may select a new or existing imagery
group for the ortho-rectification. After choosing this option you will
be prompted for the name of a new or existing imagery group. As a result,
a new file <em>mapset/group/name_of_group/<b>REF</b></em>
is created that contatins the names of all images in a group.

<div class="code"><pre>
IMG_0020 source_mapset
IMG_0021 source_mapset
IMG_0022 source_mapset
</pre></div>
</li>

<li><em>Select/Modify target location and mapset for orthorectification:
<a href="i.ortho.target.html">i.ortho.target</a></em>
<p>
This step is to be run in the <b>source location</b>.
<p>
The target location and mapset may be selected or modified in Step 2.
You will be prompted for the names of the projected target location and
mapset where the ortho-rectified raster maps will reside. The target
location is also the location from which the elevation model (raster
map) will be selected (see Step 3). In Step 2, a new file
<em>mapset/group/name_of_group/<b>TARGET</b></em>
is created contatining the names of target location and mapset.

<div class="code"><pre>
ETRS_33N
target_mapset
</pre></div>
</li>

<li><em>Select/Modify target elevation model used for orthorectification:
<a href="i.ortho.elev.html">i.ortho.elev</a></em>
<p>
This step is to be run in the <b>source location</b>.
<p>
Step 3 allows you to select the raster map from the target location to be 
used as the elevation model. The elevation model is required for both the 
computation of photo-to-target parameters (Step 6) and for the 
ortho-rectification of the imagery group files (Step 8). 
The raster map selected for the elevation model should cover the entire
area of the image group to be ortho-rectified. DTED and DEM files are
suitable for use as elevation model in the ortho-rectification program.
In Step 3 you will be prompted for the name of the raster map in the
target location that you want to use as the elevation model. As a result
of this step, a new file <em>mapset/group/name_of_group/<b>ELEVATION</b></em>
is created contatining the name and mapset of the chosen DEM.

<div class="code"><pre>
elevation layer :ELEVATION
mapset elevation:target_mapset
location        :ETRS_33N
math expression :(null)
units           :(null)
no data values  :(null)
</pre></div>
</li>

<li><em> Create/Modify camera file of imagery group:
<a href="i.ortho.camera.html">i.ortho.camera</a></em>
<p>
This step is to be run in the <b>source location</b>.
<p>
In Step 4 you may select or create a camera reference file that will be
used with the current imagery group. A camera reference file contains
information on the internal characteristics of the aerial camera, as well
as the geometry of the fiducial or reseau marks. The most important
characteristic of the camera is its focal length. Fiducial or reseau marks
locations are required to compute the scanned image to photo coordinate
transformation parameter (Step 5). Two new files are created in this step:
a file <em>mapset/group/name_of_group/<b>CAMERA</b></em>, contatining
the name of the reference camera and a file
<em>mapset/camera/<b>name_of_reference</b></em>, contatining the
camera parameters.

<div class="code"><pre>
CAMERA NAME   sony 
CAMERA ID     123 
CAMERA XP     0 
CAMERA YP     0 
CAMERA CFL    16 
NUM FID       4 
      0 -11.6 0 
      1 0 7.7 
      2 11.6 0 
      3 0 -7.7 
</pre></div>
</li>

<li><em> Compute image-to-photo transformation:
<a href="g.gui.photo2image.html">g.gui.photo2image</a></em>
<p>
This step is to be run in the <b>source location</b>.
<p>
The scanned image to photo coordinate transformation parameters, i.e. the 
"interior orientation", is computed in Step 5. In this interactive step you 
associate the scanned reference points (fiducials, reseau marks, etc.)
with their known photo coordinates from the camera reference file. A new
file <em>mapset/group/name_of_group/<b>REF_POINTS</b></em>
is created, contatining a list of pairs of coordinates in image and photo 
coordinate systems.

<div class="code"><pre>
# Ground Control Points File
# 
# target location: XY
# target mapset: source_mapset
# source  target  status
# east north east north (1=ok, 0=ignore)
#-------------------------------------------------------------
0 1816     -11.6 0.0     1
2728 3632     0.0 7.7     1
5456 1816     11.6 0.0     1
2728 0.0     0.0 -7.7     1
</pre></div>

<div align="center" style="margin: 10px">
<a href="i_ortho_photo_step5.png">
<img src="i_ortho_photo_step5.png" width="600" height="636" alt="i.ortho.photo example" border="0">
</a><br>
<i>Step 5: Image-to-photo transformation of an oblique image</i>
</div>
</li>

<li><em> Initialize parameters of camera:
<a href="i.ortho.init.html">i.ortho.init</a></em>
<p>
This step is to be run in the <b>source location</b>. 
<p>
In Step 6, initial camera exposure station parameters and initial variances 
may be selected or modified. 
<ul> 
    <li><b>X</b>: East aircraft position;</li>
    <li><b>Y</b>: North aircraft position;</li>
    <li><b>Z</b>: Flight heigh above surface;</li>
    <li><b>Omega (pitch)</b>: Raising or lowering of the aircraft's front 
	(turning around the wings' axis);</li>
    <li><b>Phi (roll)</b>: Raising or lowering of the wings (turning 
    around the aircraft's axis);</li>
    <li><b>Kappa (yaw)</b>: Rotation needed to align the aerial photo to 
    true north: needs to be denoted as +90&deg; for clockwise turn and
    -90&deg; for a counter-clockwise turn.</li>
</ul>

<div align="center" style="margin: 10px">
<a href="i_ortho_photo_step6.png">
<img src="i_ortho_photo_step6.png" width="394" height="182" alt="i.ortho.photo example" border="0">
</a><br>
<i>Principle of pitch and yaw</i>
</div>

<p>In Step 6, a new file <em>mapset/group/name_of_group/<b>INIT_EXP</b></em>
is created, contatining camera parameters.

<div class="code"><pre>
INITIAL XC    215258.345387 
INITIAL YC    6911444.022270 
INITIAL ZC    1101.991120 
INITIAL OMEGA 0.000000 
INITIAL PHI   -0.168721 
INITIAL KAPPA 3.403392 
VARIANCE XC    5.000000 
VARIANCE YC    5.000000 
VARIANCE ZC    5.000000 
VARIANCE OMEGA 0.000000 
VARIANCE PHI   0.020153 
VARIANCE KAPPA 0.017453 
STATUS (1=OK, 0=NOT OK) 0 
</pre></div>
</li>

<li><em> Compute ortho-rectification parameters from ground control points:
<a href="g.gui.image2target.html">g.gui.image2target</a></em>
<p>
This step is to be run in the <b>target location</b>.
<p>
The photo to target transformation parameters, i.e. the "exterior 
orientation", is computed in Step 7. In this interactive step, control
points are marked on one or more imagery group files and associated with
the known standard (e.g. UTM) and elevation coordinates.
Reasonable rectification results can be obtained with around twelve
control points well distributed over the image.
In this step, a new file <em>mapset/group/name_of_group/<b>CONTROL_POINTS</b></em>
is created, contatining a list of pairs of coordinates of ground control
points in photo and target coordinate systems.

<div class="code"><pre>
# Ground Control Points File
# 
# target location: ETRS_33N
# target mapset: target_mapset
#	source                          target                     status
#	east	north	height          east	north	height    (1=ok, 0=ignore)
#------------------------------     ----------------------    ---------------
98.3679932698 906.327649515 0.0 	1.0 5.0  100.0             1
733.293023813 1329.61100321 0.0 	2.0 6.0  100.0             1
1292.6317412  1703.76325335 0.0 	3.0 7.0  100.0             1
1625.54617472 1368.11694482 0.0 	4.0 6.0  100.3             1
3239.82849913 1390.97403968 0.0 	7.4 6.0  100.3             1
1570.09788497 2790.06537829 0.0 	3.0 11.0 100.0             1
</pre></div>

<div align="center" style="margin: 10px">
<a href="i_ortho_photo_step7.png">
<img src="i_ortho_photo_step7.png" width="600" height="689" alt="i.ortho.photo example" border="0">
</a><br>
<i>Step 7: Detail of ground control points matching in an oblique image and terrain model</i>
</div>
</li>

<li><em> Ortho-rectify imagery group:
<a href="i.ortho.rectify.html">i.ortho.rectify</a></em>
<p>
This step is to be run in the <b>source location</b>.
<p>
Step 8 is used to perform the actual image ortho-rectification after all
of the transformation parameters have been computed. Ortho-rectified raster
files will be created in the target location for each selected imagery
group file. You may select either the current window in the target
location or the minimal bounding window for the ortho-rectified image.

<div align="center" style="margin: 10px">
<a href="i_ortho_photo_step8.png">
<img src="i_ortho_photo_step8.png" width="600" height="459" alt="i.ortho.photo example" border="0">
</a><br>
<i>Step 8: Ortho-rectified oblique image</i>
</div>

As a result, the ortho-rectified raster map is available for visualization
and further image analysis.
</li>
</ol>

<h2>REFERENCES</h2>
Wolf P.R. (1983). <i>Elements of Photogrammetry: With Air Photo 
Interpretation and Remote Sensing</i>
<b>McGraw Hill Higher Education</b>
ISBN-10: 0070713456, ISBN-13: 978-0070713451 <br>

<h2>SEE ALSO</h2>

<em>
<a href="g.gui.image2target.html">g.gui.image2target</a>,
<a href="g.gui.photo2image.html">g.gui.photo2image</a>,
<a href="i.group.html">i.group</a>,
<a href="i.ortho.camera.html">i.ortho.camera</a>,
<a href="i.ortho.elev.html">i.ortho.elev</a>,
<a href="i.ortho.init.html">i.ortho.init</a>,
<a href="i.ortho.rectify.html">i.ortho.rectify</a>,
<a href="i.ortho.target.html">i.ortho.target</a>
</em>

<h2>AUTHOR</h2>
Mike Baba,  DBA Systems, Inc.<br>
GRASS development team, 199?-2017<br>
<!--
<p>
<i>Last changed: $Date$</i>
-->
